#pragma once
#include "RenderInterface.h"

#include <iostream>
#include "glm/glm.hpp"
#include "glm/gtc/matrix_transform.hpp"
#include "glm/gtc/type_ptr.hpp"
#include "GL/glew.h"
#include "GL/freeglut.h"

#include <memory>
#include <string>
#include <vector>
using std::string;
using std::vector;
#include "Shader.h"

#include <stdio.h>

struct SimpleSky:public RenderInterface
{
	SimpleSky();
	void update(
		glm::mat4& matProj,
		glm::mat4& matView,
		glm::mat4& model,
		float nearZ,
		glm::vec3& eyepos,
		glm::vec3& gnd2sun,
		glm::mat4& inverseProjView );
	virtual void render();
	

private:
	std::shared_ptr<Shader> _shader;
	glm::mat4* _matProj;
	glm::mat4* _matView;
	glm::mat4* _model;
	glm::mat4* _inverspv;
	glm::vec3 _eyepos;
	glm::vec3 _gnd2sun;
	float _nearZ;
	GLuint _vao;
};

